/**
 * 选择排序，每轮根据轮次，先定一位自己认为最小的数字作为基数，然后依次和它后面的数字进行对比，
 * 如果找到比基数还小的，就这个更小的作为新基数，继续和后面的对比，直到最后一位元素，这样就找到了此轮最小数，把这个数字次轮最开始的基数进行交换
 * 即第一轮选出的数字放在第一位，第二轮选出的数字放在第二位
 */
package com.test.sort;

import java.util.Arrays;

public class SelectSort {
    public static void main(String[] args) {
        int[] a = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};

        for (int i = 0; i < a.length - 1; i++) {  //第一层循环，代表第几轮排序
            int min = a[i];  //把第i位的值先作为此轮初始基数值
            int pos = i;  //把第i位作为次轮初始基数位置

            for (int j = i + 1; j < a.length; j++) {  //第二层循环，以第i+1个数字开始，依次和后面的数字进行比较，找出次轮最小数
                if (min > a[j]) {  //如果找到了比临时min更小的数字，就把次数作为临时最小值，并把pos位置修改为此处
                    min = a[j];
                    pos = j;
                }
            }  //一轮循环完，找到次轮最小数和位置了

            int temp = a[i];  //把最小数和此轮第一位进行交换
            a[i] = a[pos];
            a[pos] = temp;

        }
        System.out.println(Arrays.toString(a));
    }
}
